export default {
  data () {
    return {
      // 表格数据列表
      tableData: [],
      // 是否打开右侧抽屉
      isOpen: false,
      // 是否显示搜索
      searchShow: false,
      // 多选删除选中的数组
      sels: [],
      // 模糊搜索id
      serchData: "",
      // 搜索的键值对
      searFormData: {},
      // 当前页面
      currentPage: 1,
      // 一页数据条数
      pageSize: 10,
      // 总数据条数
      count: 0,
    }
  },
  methods: {
    // 数据大小改变
    sizeChange (size) {
      this.pageSize = size
      this.fetchData()
    },

    // 页码改变
    currentChange (current) {
      this.currentPage = current
      this.fetchData()
    },

    // 重置表单 是否要刷新数据
    resetForm (formName, isFetchData = false) {
      this.$refs[formName].resetFields()
      if (isFetchData) this.fetchData()
    },

    // 添加/查看/编辑 
    showModel (model, parameter) {
      this.isOpen = true
      this.$refs.model.fetchRow(model, parameter)
    },

    // 获取数据
    async fetchData (params = {}) {
      const pageParams = {
        currentPage: this.currentPage,
        pageSize: this.pageSize
      }
      params = Object.assign(params, pageParams)
      this.tableData = []
      const result = await this.$http.get(this.api, { params: params })
      this.tableData = result.data.rows || []
      this.count = result.data.count || 0
    },



    // 删除单行
    deleteRow (id) {
      this.$confirm(`此操作将永久删除该条数据, 是否继续?`, '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(async () => {
        const result = await this.$http.delete(`${this.api}/${id}`)
        this.$message({
          type: 'success',
          message: result.msg
        })
        this.fetchData()
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        })
      })
    },

    // 删除多行
    deleteRows () {
      this.$confirm(`此操作将永久删除, 是否继续?`, '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(async () => {
        const ids = this.sels.map(item => item.id).join()
        const result = await this.$http.delete(`${this.api}?ids=${ids}`)
        this.$message({
          type: 'success',
          message: result.msg
        })
        this.fetchData()
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        })
      })
    },

    // 右侧搜索框id模糊搜索
    serchDataChange (val) {
      this.fetchData({ id: val })
    }

  },
}